Method Generating Principle

C++은 기본적으로 6가지 메서드(C++03에서는 4가지)를 갖는다.

- 디폴트 생성자
- 복사 생성자
- 이동 생성자(C++11 이상)
- 복사 할당 연산자
- 이동 할당 연산자(C++11 이상)
- 소멸자

위의 여섯가지 메서드에 대해서는 가능한 적게 구현하고 최대한 많이 선언하는 것이 좋다.
구현되지 않은 메서드는 “default” 또는 “delete”로 선언되어야 한다.
class example{
private:
int val1=10; //
int val2=15;
public:
//
example() {}
//
example(int& val1=0, int& val2=0): val1(val1), val2(val2) {}
//
example(const example& Lval): val1(Lval.val1), val2(Lval.val2) {}
//
example(example&& Rval): val1(Rval.val1), val2(Rval.val2) {}
//
example& operator=(const example& Lval){
val1=Lval.val1;
val2=Lval.val2;
return *this;
}
//
example& operator=(example&& Rval){
std::swap(val1, Rval.val1);
std::swap(val2, Rval.val2);
return *this;
}
//
~example() {}
};
int main(void){
inline example f(int val1, int val2){
example exam1(val1, val2);
return exam1;
}
example instance1; //
example instance2(instance1); //
example instance3(f(val1, val2)); //
example instance4=instance(10, 15); //
example instance5=f(1, 5); //
instance1.~example(); //
return 0;
}